package com.tedu.api.list;

import java.util.Collection;

/**
 * 测试     ①父类：Fruit---属性：name 名字  |  方法获取名称
 *         ②两个子类：Apple，Orange--构造器：传水果名
 *         ③创建TestJob类  泛型  ？extends  父类
 *         约束 ----静态的方法printFruit（）
 *         约束只能是继承父类的子类才可以使用
 *         ④单元测试：testE（）测试--约束是否限制成功
 * 实际开发应用中，高级程序员制定！
 */
public class Fruit {
    private String name;  //私有属性  name  水果名称

    public String getName() {//获取名字
        return name;
    }

    public Fruit(String name) {//有参数构造器
        this.name = name;
    }
}
//创建两个子类：Apple和Orange继承Fruit
class Apple extends Fruit{
    public Apple() { //Apple a=new Apple();
        super("苹果");
    }
}
class Orange extends Fruit{
    public Orange() {
        super("橘子");
    }
}
//创建TestJob类---静态方法printFruit：添加约束：传入类型一定是父类的子类
class TestJob{      //?[任意类型]
    public static void printFruit(Collection<? extends Fruit> fruits){
         //增强for循环：服了Fruit 名称
        for(Fruit fruit:fruits){//获取继承[Apple,Orange]与父类的功能
            //打印对应对象的名称
            System.out.println(fruit.getName());
        }
    }
}
//测试:上界限定:一定继承Fruit【Pear不继承Fruit】
    class Pear{

    }

